/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Planificacion.Algoritmo;

import java.util.*;

public class RespuestaVoraz {
	ArrayList<Coordenada>camino;
	ArrayList<Integer>distancia;
public RespuestaVoraz(){
	this.camino= new ArrayList<Coordenada>();
	this.distancia= new ArrayList<Integer>();
		
	}
public static RespuestaVoraz Voraz(Boolean tipo, ArrayList<Coordenada>lugares){
	Coordenada posicion_inicial=new Coordenada(lugares.get(0).getX(),lugares.get(0).getY());
	Coordenada posicion_local=new Coordenada(lugares.get(0).getX(),lugares.get(0).getY());
	lugares.remove(0);
	RespuestaVoraz rpta=new RespuestaVoraz();	
	
	while(lugares.size()>0){
		ArrayList<Integer>distanciaLugares=new ArrayList<Integer>(lugares.size());
		ArrayList<Integer>mejoresLugares=new ArrayList<Integer>();
		int menor_distancia=0;
		for(int i=0;i<lugares.size();i++){
			int distancia=getDistancia(posicion_inicial, lugares.get(i));
			distanciaLugares.add(i, distancia);
			if(i==0)menor_distancia=distancia;
			if(menor_distancia>distancia){
				mejoresLugares.clear();
				distancia=menor_distancia;
			}
			if(menor_distancia==distancia){
				mejoresLugares.add(i);

			}
		}	
		if(lugares.size()==0){
			
			
		}	
	        int res=mejoresLugares.get(0);
	        posicion_inicial=new Coordenada(lugares.get(res).getX(),lugares.get(res).getY());
	        rpta.camino.add(posicion_inicial);
	        //System.out.println("("+posicion_inicial.getX()+","+posicion_inicial.getY()+")" + " " + menor_distancia);
	        rpta.distancia.add(menor_distancia);
	        
	        lugares.remove(res);	
	}
	
	if (tipo==true){
		int distancia=getDistancia(posicion_inicial,posicion_local);
		rpta.camino.add(posicion_local);
		rpta.distancia.add(distancia);
	}
	return rpta;
	
}	
private static Integer getDistancia(Coordenada posicion_inicial,
		Coordenada coordenada) {
	int distancia_x=posicion_inicial.getX()-coordenada.getX();
	int distancia_y=posicion_inicial.getY()-coordenada.getY();
	if(distancia_x<0)distancia_x=-distancia_x;
	if(distancia_y<0)distancia_y=-distancia_y;
	return distancia_x+distancia_y;
}

}


